package com.ce.pms.charge.dao;

import java.util.List;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.charge.model.DebitTransDomain;
import com.sitechasia.webx.core.support.Page;

public interface IDebitTransDao extends IPmsBaseDao<DebitTransDomain> {
	/**
	 * 方法描述: 查询所以存在收费标准的应收交易
	 * @author 胡煦
	 * Create on:2008-10-10
	 * @param
	 * @return List<DebitTransDomain>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<DebitTransDomain> getTransDomainHasVer();
	/**
	 * 方法描述: 根据原始数据Id查询应收交易实体
	 * @author 胡煦
	 * Create on:2008-8-25
	 * @param chargeDatasId
	 * @return DebitTransDomain
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<DebitTransDomain> getTransDomainBy(Long chargeDatasId);

	/**
	 * 功能描述:  给定N多子帐户ID,然后查询所谓指定状态的子帐户交易<br>
	 * @param chargeAccountIds
	 * @return
	 * Create author:yixianjian <br>
	 * Create on:2008-9-24  <br>
	 */
	public List<DebitTransDomain> queryDebitTransDomain(List<Long> chargeAccountIds,String statuz);

	/**
	 * 功能描述:  给定N多子帐户ID,然后分页查询指定状态的子帐户交易<br>
	 * @param chargeAccountIds
	 * @return
	 * Create author:yixianjian <br>
	 * Create on:2008-9-24  <br>
	 */
	public Page queryDebitTransDomain(List<Long> chargeAccountIds,String statuz,int currentPage,int pageSize);

	/**
	 * 功能描述:给定N多子帐户ID,然后查询所谓指定状态的子帐户交易的数目<br>
	 * 在银行托收时用到了.在insert交易明细,托收明细时,需要根据具体的数目来确定采用一次更新还是批量更新.
	 * @param chargeAccountIds
	 * @param statuz
	 * @return
	 * Create author:yixianjian <br>
	 * Create on:2008-9-24  <br>
	 */
	public Long getCountForQuery(List<Long> chargeAccountIds,String statuz);
	/**
	 * 功能描述:  跟新指定子帐户(chargeAccountIds)下面所有的交易状态<br>
	 * @param chargeAccountIds 子帐户ID
	 * @param statuz  需要更新的状态
	 * Create author:yixianjian <br>
	 * Create on:2008-12-2  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public void updateDEbitTransDomainToOut(Long bankId);
	/**
	 * 功能描述:讲托收明细同子帐户交易建立关系<br>
	 * Create author:yixianjian <br>
	 * Create on:2009-1-12  <br>
	 */
	public void insertDetailRTrans(Long collectionId);
}
